當您初始化一個沒有明確類型規範的變量時,編譯器會自動推斷具有足以表示該值的最小範圍的類型。
如果不超過 Int
的範圍,則類型為 Int
。 如果超過,則類型為 Long
。
要明確指定 Long 值,請將後綴 L 附加到該值。 顯式類型規範觸發編譯器檢查值不超過指定類型的範圍。
val one = 1 // Int
val threeBillion = 3000000000 // Long
val oneLong = 1L // Long
val oneByte: Byte = 1
您可以使用具有小數部分的數字初始化 Double
和 Float
變量。
它通過句點 (.
) 與整數部分隔開。
對於使用小數初始化的變量,編譯器會推斷出 Double
類型:
val pi = 3.14 // Double
// val one: Double = 1 // Error: type mismatch
val oneDouble = 1.0 // Double
要明確指定值的浮點類型,請添加後綴 f
或 F
。
如果此類值包含超過 6-7 個十進制數字,則將對其進行四捨五入:
val e = 2.7182818284 // Double
val eFloat = 2.7182818284f // Float, actual value is 2.7182817
與其他一些語言不同,Kotlin 中沒有隱式的數字擴展轉換。
例如,具有 Double 參數的函數只能在 Double 值上調用,而不能在 Float、Int 或其他數值上調用:
fun main() {
fun printDouble(d: Double) { print(d) }
val i = 1
val d = 1.0
val f = 1.0f
printDouble(d)
// printDouble(i) // Error: Type mismatch
// printDouble(f) // Error: Type mismatch
}